package com.lvtulife.paas.gtd.service;

import com.lvtulife.common.bean.DelVo;
import com.lvtulife.common.service.BaseServiceI;
import com.lvtulife.paas.gtd.bean.StrategyVo;
import com.lvtulife.paas.gtd.entity.GtdStrategy;

import java.io.Serializable;
import java.util.List;

/**
 * GtdStrategy 表数据服务层接口
 */
public interface GtdStrategyServiceI extends BaseServiceI<GtdStrategy> {

    /**
     * 保存主题策略
     *
     * @param vo
     * @return
     */
    Long saveStrategy(StrategyVo vo);

    /**
     * 排序
     *
     * @param id   待排序策略主键
     * @param sort 序号
     */
    void sortStrategy(Long id, Integer sort);

    /**
     * 公开主题策略
     *
     * @param id
     * @param isOpen
     */
    void openStrategy(Long id, Boolean isOpen);

    /**
     * 删除主题策略
     * 逻辑删除
     *
     * @param delVo 删除参数
     */
    void delStrategy(DelVo delVo);

    /**
     * 批量删除主题策略
     * 逻辑删除
     *
     * @param delVo 删除参数
     */
    void multiDelStrategy(DelVo delVo);

    /**
     * 获取阶段内所有的主题策略
     *
     * @param userId 用户主键
     * @param stage  阶段
     * @return
     */
    List<GtdStrategy> findStageStrategy(Long userId, Integer stage);

    /**
     * 获取指定主题下的各阶段的主题策略
     *
     * @param userId  用户主键
     * @param themeId 主题主键
     * @return
     */
    List<GtdStrategy> findThemeStrategy(Long userId, Integer themeId);


}